package com.itany.corejava.code08_常用类.包装类;

/**
 * @author 石小俊
 * 2024年07月22日 14:42
 */
public class Test01_定义方式 {
    public static void main(String[] args) {
        Integer i = new Integer(1);
        // 参数1是int类型,可以自动转换成long类型
        Long l = new Long(1);
        // 参数1是int类型,只能强制转换成byte
        Byte b = new Byte((byte) 1);
        Byte b2 = new Byte("1");
        // 对于布尔类型,参数如果是一个字符串
        // 此时只有参数值为字符串true时表示true
        // 其他所有值都表示false
        Boolean flag = new Boolean("true");
        System.out.println(flag);
        Boolean flag2 = new Boolean("1");
        Boolean flag3 = new Boolean("admin");
        System.out.println(flag2);
        System.out.println(flag3);

        Character c = new Character('a');
        Character c2 = Character.valueOf('a');
        Integer i2 = Integer.valueOf(1);
        Byte b3 = Byte.valueOf((byte) 1);

        Integer i3 = new Integer(10);
        Integer i4 = new Integer(10);
        int i5 = 10;
        System.out.println(i3 == i4);   // false
        System.out.println(i4 == i5);   // true

        //if (i >= IntegerCache.low && i <= IntegerCache.high)
        //    return IntegerCache.cache[i + (-IntegerCache.low)];
        //return new Integer(i);
        // low=-128,high=127
        // 从上述代码可以看出,当值的范围在[-128,127]时,没有开辟新的区域
        // 超出范围才会开辟新的区域
        // 如果没有开辟新的区域,比较时只比较值的大小
        Integer i6 = Integer.valueOf(127);
        Integer i7 = Integer.valueOf("127");
        System.out.println(i6 == i7);

        Integer i8 = Integer.valueOf(128);
        Integer i9 = Integer.valueOf("128");
        System.out.println(i8 == i9);
    }
}
